#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "hidecursor.h"//隐藏光标
#include "clearscreen.h"//清屏
//github test
//edit
//函数全局变量定义
int position_x,position_y;//飞机位置
int high, width;//游戏画面尺寸

int bullet_x, bullet_y;//子弹位置

int enemy_x, enemy_y;//敌机位置

int score;//得分

int life;//生命值





void startup()//数据初始化
{
    high = 18;
    width = 30;

    position_x = high / 2;
    position_y = width / 2;//飞机位置初始化

    bullet_y = position_y;
    bullet_x = -1;//子弹位置合理初始化

    enemy_x = 0;
    enemy_y = width / 2;//敌机位置初始化

    score = 0;//得分初始化
    life = 3;//生命初始化
    hidecursor();//光标一直隐藏
}

void show()//显示画面
{
    clearscreen(0, 0);//清屏函数

    int i,j;


    for (i = 0; i < high;i++)
    {
        for (j = 0; j < width;j++)
        {
            if((i==position_x) && (j==position_y))
                printf("*");//输出飞机*
            else if((i==bullet_x) && (j==bullet_y))
                printf("|");//输出子弹|
            else if((i==enemy_x) && (j==enemy_y))
                printf("@");//输出敌机
            else
                printf(" ");//输出空格
        }
        printf("\n");
    }
    printf("得分：%d \n", score);
    printf("生命值：%d  \n", life);
}

void updateWithoutInput()//与用户输入无关的更新
{
    if((bullet_x==enemy_x) && (bullet_y==enemy_y))
    {
        score++;
        enemy_x = -1;
        bullet_x = -1;
        enemy_y = rand() % width;
    }

    if((position_x==enemy_x) && (position_y==enemy_y))
    {
        life--;
        enemy_x = -1;
        bullet_x = -1;
        enemy_y = rand() % width;

    }
   
    //控制飞机下落速度
    static int speed = 0;//静态变量
    if(speed<10)
        speed++;
    if(bullet_x>-1)
    {
        bullet_x--;
    }
    if(enemy_x>high)
    {
        enemy_x = 0; 
        enemy_y = rand() % width;
    }
    else
    {
        if(speed==10)
        {
            enemy_x++;
            speed = 0;
        }
    }
    
}
void updateWithInput()//与用户输入有关的更新
{
    char input;

    if(kbhit())//当按键时执行
    {
        input = getch();

        if(input=='a')
            position_y--;
        if(input=='s')
            position_x++;
        if(input=='d')
            position_y++;
        if(input=='w')
            position_x--;
        if(input==' ')
        {
            bullet_x = position_x - 1;
            bullet_y = position_y;
        }
    }
}

int main()
{
    startup(); //数据初始化
    while(1)//游戏循环
    {
        show();//显示画面
        updateWithoutInput();//与用户输入无关的更新
        updateWithInput();//与用户输入有关的更新
        if(score>=5)
        {
            printf("你赢了!\n");
            system("pause");
            return 0;
        }
        if(life==0)
        {
            printf("你输了!\n");
            system("pause");
            return 0;
        }
    }
    return 0;    
}

    
